#ifndef __M_MSG_H__
#define __M_MSG_H__
#include "level.hpp"
#include "util.hpp"
#include <thread>
#include <memory>

namespace cl{
/**
 * @brief LogMsg 结构体表示一条日志消息的各项属性。
 * 
 * 该结构体存储了日志消息的行号、时间戳、线程ID、日志器名称、文件名、日志消息内容和日志级别等信息，
 * 用于描述和记录日志的详细信息。
 */
struct LogMsg{
    using ptr = std::shared_ptr<LogMsg>;
    size_t _line;           // 行号
    time_t _ctime;          // 时间戳
    std::string _name;      // 日志器名称
    std::string _file;      // 文件名
    std::thread::id _tid;   // 线程ID
    std::string _payload;   // 日志消息
    LogLevel::value _level; // 日志等级 
    LogMsg(std::string &name, std::string file, size_t line
    , std::string &&payload, LogLevel::value level)
        : _name(name), _file(file), _line(line), _payload(std::move(payload)), _level(level)
        , _ctime(util::date::now()), _tid(std::this_thread::get_id()){
            // std::cout << "构造msg\n" ;
        }
    //~LogMsg() { /*std::cout << "析构msg\n";*/}
};
}
#endif